﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Web;
using System.Web.Mvc;
using Traviesuras.Models;

namespace Traviesuras.Controllers
{
    public class LoginController : Controller
    {
        //
        // GET: /Login/

        public ActionResult Sesion()
        {
            //clsConfiguracion.GetFile();
            clsUsuario user = new clsUsuario();
            try
            {
                if (((clsUsuario)Session["usuario"]).nombre_usuario != null)
                    return View("../Home/Index");
            }catch (Exception){}

            return View(user);
        }

        //Controlador que consulta el usuario a la base de datos y devuelve los resultados a la vista
        //Valida el ingreso al sistema
        [HttpPost]
        public ActionResult Sesion(clsUsuario user)
        {

            if (!clsAccesoDB.Login(ref user))
            {
                ModelState.AddModelError("error", "El nombre de Usuario o Contraseña son Incorectas.");

                return View(user);
            }
            user.clsPersona = clsAccesoDB.ConsultaPersona(user.persona).First();
            Session["usuario"] = user;
            Session["menu"] = clsAccesoDB.ConsultaMenu(user.tipo_usuario).Where(q=>q.visible=="S").ToList();

            return View("../Home/Index");
        }

        //Cerrar sesion en el sistema
        public ActionResult LogOut()
        {
            try
            {
                Session["usuario"] = null;
                Session["menu"] = null;
                return this.RedirectToAction("Sesion", "Login");
            }
            catch (Exception)
            {
                return this.RedirectToAction("Sesion", "Login");
            }
        }

        ////////////////////////////////////////////
        //  Controlador que obtiene los datos del registro de usuario y envia los resultados a la BD
        [HttpPost]
        public ActionResult Registro(clsUsuario user)
        {
            clsPersona clsp = new clsPersona();
            clsp.nombre = user.clsPersona.nombre;
            clsp.apellido = user.clsPersona.apellido;
            clsp.identificacion = user.clsPersona.identificacion;
            clsp.telefono = user.clsPersona.telefono;
            clsp.email = user.clsPersona.email;
            clsp.direccion = user.clsPersona.direccion;
            string msg = "";
            if (user.contrasenaString2 != user.recontrasenaString2 || user.clsPersona.nombre == string.Empty || user.clsPersona.apellido == string.Empty || user.clsPersona.identificacion == string.Empty || user.clsPersona.email == string.Empty)
            {
                ModelState.AddModelError("error", "Complete Correctamente todos los Datos.");

                return this.RedirectToAction("Sesion", "Login");
            }else { 
                if(!clsAccesoDB.SolicitudRegistro(user, ref msg)) ModelState.AddModelError("error", msg); 
            }

            //user = new clsUsuario();
            return this.RedirectToAction("Sesion", "Login", user);
        }

        [HttpPost]
        public ActionResult Recuperar(clsUsuario user)
        {
            clsConfiguracion.enviar_mail(user.clsPersona.email, "Recuperacion de Contrasena TRAVIESURAS");
            user = new clsUsuario();
            return this.RedirectToAction("Sesion", "Login", user);
        }

    }
}
